package br.edu.fucapi.remo.control.mb;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.edu.fucapi.remo.model.bean.Associado;
import br.edu.fucapi.remo.model.dao.AssociadoDAO;
import br.edu.fucapi.remo.model.dao.DAO;
import br.edu.fucapi.remo.util.Constantes;

@ViewScoped
@ManagedBean
public class AssociadoBean{
	
	private Associado associado = new Associado();
	
	private List<Associado> associados;
	
	private AssociadoDAO associadoDAO = new AssociadoDAO();
    

	@PostConstruct
	public void carregarAssociados(){
		associados = new DAO<Associado>(Associado.class)
					.listaTodos();
	}
	
	public Associado getAssociado() {
		return associado;
	}

	public void setAssociado(Associado associado) {
		this.associado = associado;
	}
	
	public List<Associado> getAssociados() {
		return associados;
	}
	
	public void pesquisarAssociado(){
		associados = associadoDAO.pesquisar(associado);
	}
	
	public String salvar(){
		DAO<Associado> dao = new DAO<Associado>(Associado.class);
		try {
			if (associado.getId() == null) {
				dao.adiciona(associado);
				FacesMessage message = new FacesMessage(Constantes.SUCESSO_INCLUSAO);
		        FacesContext.getCurrentInstance().addMessage("mensagens", message);
			} else {
				dao.atualiza(associado);
				FacesMessage message = new FacesMessage(Constantes.SUCESSO_ALTERACAO);
		        FacesContext.getCurrentInstance().addMessage("mensagens", message);
			}
			this.associado = new Associado();
			this.associados = dao.listaTodos();
			return "associadoList";
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public void remover(){
		DAO<Associado> dao = new DAO<Associado>(Associado.class);
		dao.remove(this.associado);
		FacesMessage message = new FacesMessage(Constantes.SUCESSO_EXCLUSAO);
        FacesContext.getCurrentInstance().addMessage("mensagens", message);
		this.associado = new Associado();
		this.associados = dao.listaTodos();
	}

	public AssociadoDAO getAssociadoDAO() {
		return associadoDAO;
	}

	public void setAssociadoDAO(AssociadoDAO associadoDAO) {
		this.associadoDAO = associadoDAO;
	}

	public void setAssociados(List<Associado> associados) {
		this.associados = associados;
	}
	
	
	
}